/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package consumo.session;

import consumo.ejb.BasicSessionBean;
import consumo.entity.Usuario;
import java.util.List;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;

/**
 *
 * @author Carlos Taschetto
 */
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class UsuarioSession extends BasicSessionBean{

    public Usuario getUsuarioById(int usuarioId) {
        return getPojo(Usuario.class, usuarioId);
    }

    public List<Usuario> getAllUsuarios(){
        return  getList(Usuario.class, "Select u from Usuario u");
    }

    public Usuario getUsuarioByNome(String nome){
        return getPojo(Usuario.class, "select u from Usuario u where u.nome like ?1", "%"+nome+"%");
    }

    public Usuario getUsuarioByNamePass(String nome, String password){
        return getPojo(Usuario.class, "select u from Usuario u where u.nome = ?1 and u.senha = ?2", nome, password);
    }

    public Usuario isUsuarioOk(String userName, String senha){
        Usuario obj = null;
        obj = getPojo(Usuario.class, "Select u from Usuario u "
                + "where u.email = ?1 and u.senha = ?2", userName, senha);
        return obj;
    }

    /**
     * Insere um novo usuario
     * @param user
     * @return user
     */
    public Usuario saveUsuario(Usuario user){
        getEm().persist(user);
        return user;
    }

    /**
     * Altera dados do usuario
     * @param user
     * @return user editado
     */
    public Usuario setUsuario(Usuario user){
        getEm().merge(user);
        return user;
    }

    public boolean removeUsuario(int user){
        return (execute("Delete from Usuario u where u.id = ?1", user) <= 0);
    }

    public void removeUsuario(Usuario user){
        getEm().remove(user);
    }
}
